package com.xique.park.bean.domain;

import cn.easyes.annotation.IndexField;
import cn.easyes.annotation.IndexId;
import cn.easyes.annotation.IndexName;
import cn.easyes.common.constants.Analyzer;
import cn.easyes.common.enums.FieldType;
import cn.easyes.common.enums.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xique.common.core.annotation.Excel;
import lombok.Data;

import java.util.Date;

/**
 * 停车流水订单
 * -单次停车唯一标识对象 t_parking_order
 *
 * @author xique
 * @date 2021-12-09
 */
@Data
@IndexName(value = "parking_order", shardsNum = 3, replicasNum = 2)
public class ParkingOrder {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @IndexId(type = IdType.CUSTOMIZE)
    private Long id;

    /**
     * 车场id
     */
    @Excel(name = "车场id")
    private Long parkId;

    /**
     * 停车流水号，唯一标识某一次停车
     */
    @Excel(name = "停车流水号，唯一标识某一次停车")
    private String parkingSerial;

    /**
     * 车牌号
     */
    @Excel(name = "车牌号")
    @IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.KEYWORD, searchAnalyzer = Analyzer.KEYWORD)
    private String plate;

    /**
     * 进场时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "进场时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date inTime;

    /**
     * 停车时长（秒）
     */
    @Excel(name = "停车时长", readConverterExp = "秒=")
    private Long parkingTime;

    /**
     * 总金额
     */
    @Excel(name = "总金额")
    private Long totalFee;

    /**
     * 提前支付金额
     */
    @Excel(name = "提前支付金额")
    private Long paidFee;

    /**
     * 优惠券抵扣金额
     */
    @Excel(name = "优惠券抵扣金额")
    private Long couponFee;

    /**
     * 本次出场需支付金额
     */
    @Excel(name = "本次出场需支付金额")
    private Long payFee;

    /**
     * 大小车型
     */
    @Excel(name = "大小车型")
    private String carSize;

    /**
     * 车辆管理类型id
     */
    @Excel(name = "车辆管理类型id")
    private Long mngtypeId;

    /**
     * 车辆在场、出场状态
     */
    @Excel(name = "车辆在场、出场状态")
    private String parkStatus;

    /**
     * 车辆支付状态
     */
    @Excel(name = "车辆支付状态")
    private String payStatus;

    /**
     * 车辆状态，预留
     */
    @Excel(name = "车辆状态，预留")
    private String status;

    /**
     * 车库id：子订单属性
     */
    @Excel(name = "车库id：子订单属性")
    private Long garageId;

    /**
     * 父订单id：子订单属性
     */
    @Excel(name = "父订单id：子订单属性")
    private Long pid;

    /**
     * 进场车牌
     */
    private String inCarPlate;

    /**
     * 入场图片
     */
    private String inPic;

    /**
     * 入场通道名称
     */
    private String inLaneName;

    /**
     * 入场类型
     */
    private String inType;

    /**
     * 入场状态
     */
    private String inStatus;

    /**
     * 入场备注
     */
    private String inRemark;

    /**
     * 入场更新人ID
     */
    private Long inUpdateUser;

    /**
     * 车辆管理小类名称
     */
    private String carMngtypeName;

    /**
     * 出场车牌
     */
    private String outCarPlate;

    /**
     * 出场时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date outTime;

    /**
     * 出场图片
     */
    private String outPic;

    /**
     * 出场通道名称
     */
    private String outLaneName;

    /**
     * 出场类型
     */
    private String outType;

    /**
     * 出场状态
     */
    private String outStatus;

    /**
     * 出场备注
     */
    private String outRemark;

    /**
     * 出场更新人
     */
    private Long outUpdateUser;

    /**
     * 退款金额（分）
     */
    private Long refundAmount;

    /**
     * 用户编号
     */
    private Long baseUserId;

    /**
     * 创建时间
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 备注
     */
    @TableField(exist = false)
    private String remark;

    /**
     * 支付流水号
     */
    @TableField(exist = false)
    private String paySsn;

    /**
     * 车辆管理的大类
     */
    @TableField(exist = false)
    private String mngType;

    /**
     * 车场名称
     */
    @TableField(exist = false)
    private String parkName;

    /**
     * 支付方式（0-P云，1-现金，2-ETC，3-余额，4-支付宝，8-微信，9-免费，10-数字人名币）
     */
    @TableField(exist = false)
    private String payType;

    /**
     * 支付时间
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;
}
